package com.stu.annotation;

import java.lang.reflect.*;

public class HandleAnno {
  public static void main(String[] args) throws Exception {
    Class<?> clazz = UseAnno.class;
    if(clazz.isAnnotationPresent(TypeAnno.class)) {
      TypeAnno classAnno = clazz.getAnnotation(TypeAnno.class);
      System.out.println(classAnno.value());
    }

    Field field = clazz.getField("field");
    FieldAnno fieldAnno = field.getAnnotation(FieldAnno.class);
    if(fieldAnno != null) {
      System.out.println(fieldAnno.value());
    }

    Method method = clazz.getMethod("method",int.class);
    MyAnno methodAnno = method.getAnnotation(MyAnno.class);
    if(methodAnno != null) {
      System.out.println(methodAnno.value());
    }

    Parameter[] parameters = method.getParameters();
    for (Parameter p : parameters) {
      if(p.isAnnotationPresent(MyAnno.class)) {
        MyAnno paramAnno = p.getAnnotation(MyAnno.class);
        System.out.println(paramAnno.value());
      }
    }
  }
}
